<?php
	
if (!function_exists('date2sql')) {
	
	/**
	 * Converte a data dd/mm/aaaa -> aaaa-mm-dd
	 * @param string $v Formato dd/mm/aaaa
	 * @example date2sql("30/07/1985");
	 * @return data no formato americano (1985-07-30)
	 */
	function date2sql($v) {
		if (empty($v)) {
			return '';
		}
		list($data, $resto) = explode(" ", $v);
		list($dia, $mes, $ano) = explode("/", $data);
		return trim($ano . "-" . $mes . "-" . $dia . " " . $resto);
	}
	
}

if (!function_exists('sql2date')) {
	
	/**
	 * Converte a data aaaa-mm-dd -> dd/mm/aaaa
	 * @param string $v Formato aaaa-mm-dd
	 * @example sql2date("1985-07-30");
	 * @return data no formato brasileiro (30/07/1985)
	 */
	function sql2date($v, $formato = "d/m/Y") {
		if(empty($v)){
			return false;
		}
		return date($formato, strtotime($v));
	}
	
}

if (!function_exists('sql2datef')) {
	
	/**
	 * Converte a data aaaa-mm-dd -> dd/mm/aaaa
	 * @param string $v Formato aaaa-mm-dd
	 * @param string $formato o formato definido pela função sql2datef()
	 * @param string $local o locale, Ex.: pt_BR
	 * @return data no formato específico
	 */
	function sql2datef($v, $formato = "%d/%B/%Y", $local = array("ptb", "pt_BR")) {
		if(empty($v)){
			return false;
		}
		setlocale(LC_TIME, $local);
		
		return strftime($formato, strtotime($v));
	}
	
}

if (!function_exists('date_diff')) {

	/**
	 * Calcula a diferenca em dias entre dataInicio e dataFim
	 */
	function date_diff($dataInicio, $dataFim) {
	    $current = $dataInicio;
	    $datetime2 = date_create($dataFim);
	    $count = 0;
	    while(date_create($current) < $datetime2){
	        $current = gmdate("Y-m-d", strtotime("+1 day", strtotime($current)));
	        $count++;
	    }
	    return $count;
	}
	
}

if (!function_exists('addDay')) {
	
	/**
	 * Adiciona dias de uma data
	 * @param $data a data no formato Y-m-d
	 * @param $dias
	 * @return a data resultante no formato Y-m-d
	 */
	function addDay($data, $dias, $separador = '-') {
		list($ano, $mes, $dia) = explode($separador, $data);
		$nextdate = mktime ( 0, 0, 0, $mes, $dia + $dias, $ano);
		return date("Y-m-d", $nextdate);
	}
}
if (!function_exists('subDay')) {

	/**
	 * Subtrai dias de uma data
	 * @param $data a data no formato Y-m-d
	 * @param $dias
	 * @return a data resultante no formato Y-m-d
	 */
	function subDay($data, $dias, $separador = '-') {
		list($ano, $mes, $dia) = explode($separador, $data);
		$nextdate = mktime ( 0, 0, 0, $mes, $dia - $dias, $ano);
		return date("Y-m-d", $nextdate);
	}
}	